home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / motif-faq / part5 < prev    next >
Encoding:
Text File  |  1995-07-25  |  49.1 KB  |  1,156 lines

  1. Subject: Motif FAQ (Part 5 of 6)
  2. Newsgroups: comp.windows.x.motif,comp.answers,news.answers
  3. From: ksall@cen.com (Ken Sall)
  4. Date: 11 Oct 1994 07:52:09 GMT
  5.  
  6. Archive-name: motif-faq/part5
  7. Last-modified: OCT 10, 1994
  8. Posting-Frequency: monthly
  9. Organization: Century Computing, Inc.
  10. Version: 3.8
  11.  
  12.  
  13.  
  14. -----------------------------------------------------------------------------
  15. Subject: 139)  Is there a Poplog binding for Motif?
  16.  
  17. [Last modified: May 93]
  18.  
  19. Answer:
  20.  A integrated programming environment consisting of the programming
  21.     languages Pop-11, Prolog, Standard ML, and Lisp which are compiled
  22.     to machine code via a common virtual machine. Pop-11 provides a rich
  23.     interface to the X Toolkit which can be accessed from all other
  24.     Poplog languages. The OLIT, Motif, and Athena widget sets are
  25.     supported, in addition to the custom Poplog (Xpw) widget set. XVed
  26.     provides a sophisticated, customisable multi-window editor. Under
  27.     OPEN LOOK and Motif the Poplog User Interface (PUI) provides a
  28.     graphical interface to the Poplog system. High-level Pop-11
  29.     libraries allow graph drawing, turtle graphics, and the simple
  30.     creation of basic button/menu based interfaces.
  31.  
  32. Contact:
  33.  
  34.     UK EDUCATION SITES:
  35.         Poplog Sales. School of Cognitive and Computing Sciences.
  36.         Brighton. BN1 9QN. England.
  37.         Phone: +44 (0)273 678188
  38.         Email: popsales@cogs.susx.ac.uk
  39.     USA AND CANADIAN EDUCATION SITES:
  40.         Computable Functions Inc. 35 South Orchard Drive. Amherst.
  41.         MA 01002. USA.
  42.         Phone: (413) 253-7637
  43.     ALL OTHER SALES:
  44.         Integral Solutions Ltd. Unit 3, Campbell Court. Bramley.
  45.         Basingstoke. Hampshire. RG26 5EG. England.
  46.         Phone:  +44 (0)256 882028
  47.         Fax:    +44 (0)256 882182
  48.         Email:  isl@integ.uucp
  49.  
  50.  
  51. -----------------------------------------------------------------------------
  52. Subject: 140)  TOPIC: SPECIFIC PLATFORMS
  53.  
  54. -----------------------------------------------------------------------------
  55. Subject: 141)  Is it easy to build Motif for a Sun?
  56.  
  57. Answer: See next question for Solaris 2.  No pattern has emerged to problems
  58. about compiling Motif on the Sun (although people seem to have a lot of
  59. different minor problems), and many reports are that it is straightforward.
  60. Read the Motif install instructions (which often have specific reference to
  61. Sun installation), light the blue touch paper and just standback. [My
  62. experience was that I had to add -D_NO_PROTO for 1.1 on a Sparc OS 4.1, and
  63. that was all.  Others have added STRINGS_ALIGNED and NO_REGEXP].
  64.  
  65.  
  66. -----------------------------------------------------------------------------
  67. Subject: 142)* How do I build Motif 1.2.2 on Solaris 2.1 with Sun C?
  68.  
  69. [Last modified: Oct 94]
  70.  
  71. Prepared by Ric Steinberger.  ric@updike.sri.com  4/09/93
  72.  
  73. What follows is a description of the steps I used to build Motif 1.2.2 on a
  74. SUN IPX running Solaris 2.1.  Sun's C compiler (2.0.1) was used.  Many thanks
  75. go to Kaleb Keithley (kaleb@devvax.jpl.nasa.gov) for several useful
  76. suggestions.  Other people, including OSF staff, especially David Brooks
  77. (dbrooks@osf.org), helped as well.  My thanks to you all.
  78.  
  79. 1. Build X11R5 from the mit distribution.  You need to retrieve the sources
  80.    from ftp.x.org (in pub/R5) and patches 1 - 22 (or fixes 1-26)
  81.    pub/R5/fixes).  There are several other sites that contain the X11R5
  82.    sources.  After installing patch 19, apply PEXlib.tar.Z, also available
  83.    from ftp.x.org in pub/R5/fixes.  You can apply also
  84.    R5.Xsun.multi-screen and R5.SunOS5.patch.  There are .README files
  85.    that explain how to patch.  Be SURE to read
  86.    R5.SunOS5.patch.README for details on how to BUILD X11.  You probably
  87.    want to use the ProjectRoot feature in the site.def file in the
  88.    mit/config directory.  You will NEED to edit that file to do that.
  89.  
  90. 2. Obtain the Motif 1.2.2 distribution from OSF (617-621-7300).  You may
  91.    need to first install the 1.2 tape, then the 1.2.1 and finally the
  92.    1.2.2 tape.  You might want to do a "chmod -R u+w ." after unloading
  93.    each tape.
  94.  
  95. 3. In the config directory, there are several changes.  Some of the changes
  96.    are based on R5.SunOS5.patch files.  A complete set of config files
  97.    relevant to Solaris have been placed in the anon-ftp account of
  98.    updike.sri.com in pub/motif/solaris21-motif122-config.tar.Z.  They are
  99.    also available from OSF on their mail response server (available to
  100.    support contract holders) and they will send them directly to full
  101.    support contract holders.  Decompress and untar this file in your Motif
  102.    config subdirectory.  Copy site.def.sample to site.def, then edit
  103.    site.def.  You will probably want to uncomment the ProjectRoot section
  104.    and use the same value used in your X11R5 build.  Also, you will probably
  105.    want to use /usr/ucb/install in you installed the UCB compatibility
  106.    suite.  Otherwise you might want to use the install supplied at the end
  107.    of this memo.  [I used the UCB version and can't swear that this works.
  108.    Bit it should.  Put it someplace like /usr/local/bin and chmod +x it.]
  109.  
  110.    There are two patches to consider.  One fixes a cursor problem
  111.    in ./lib/Xm/TextF.c.  The other removes a Berkeleyism.  These
  112.    patches should probably be consider unofficial at present.
  113.    Failure to deal with the Berkeleyism (bzero) means you will need to
  114.    link with -lucb -lelf.  This will probably work, but why bother?
  115.    Furthermore, if you move the Motif binaries to a machine without
  116.    the ucb compatability suite, you won't have the sharable libs you need.
  117.  
  118. [The actual patches have been censored because they contain OSF source code]
  119.  
  120.    Patch 1: In TextF.c there are several places _XmTextFieldDrawInsertionPoint
  121. is called. These should be moved two or three lines further down *after* the
  122. "if (!XtIsRealized(tf)) return True;" statement.
  123.  
  124.  
  125.    patch 2: The call to bzero in lib/Xm/Visual.c should be replaced by the
  126. equivalent call to memset
  127.  
  128.  
  129.     Both these patches can be applied in the ./lib/Xm directory.
  130.     If you don't have the patch program (how did you build X11?),
  131.     you can get it in the vendor/cygnus directory of ftp.uu.net,
  132.     or you can build it from source.  Be sure to get the latest
  133.     version (2.0.12.u8).
  134.  
  135. 4) Use the README-1.2.1 file as a guideline for building motif.  I followed
  136.    directions in the section called, "Using X11R5 Installed Libraries
  137.    and Header Files."  If you make a mistake after your first build
  138.    attempt, copy Makefile.ini to Makefile before retrying.  You may
  139.    need to do this in the config subdirectory too, depending on what
  140.    went wrong.
  141.  
  142. 5) After make Makefiles, do make includes, make depend, then make (or
  143.    as OSF recommends, make -k).  This gets as far as motifshell in the
  144.    demos, which fails to build because O_RDONLY and L_XTND are
  145.    not defined.  O_RDONLY is in fcntl.h (actually <sys/fcntl.h>, but
  146.    fcntl.h includes this.)  L_XTND can be replaced by SEEK_END.
  147.    SEEK_END is in stdio.h.  These two fixes will allow motifshell to build.
  148.    Note: many MANY compiler warning messages will be generated during
  149.    the build process.
  150.  
  151. 6) You can go to the demos/xmsamplers directory and do a make there.
  152.    Other demos may build, or not depending on whatever. . . .
  153.  
  154. 7) make install will do the install.  [It will fail at motifshell
  155.    if you don't fix it, as mentioned above.]  You can do a make install
  156.    in demos/xmsamplers if you want these.
  157.  
  158. 8) If running on a SUN (as opposed to an X term), you will (probably) need
  159.    to start openwin with something like:
  160.  
  161.         openwin -server /usr/X11R5/bin/Xsun
  162.  
  163.  
  164.    [You might want to use an alias for this.]
  165.    This fixes an annoying problem: The mouse keys stop working after you
  166.    click on an icon to get the icon menu (on SUNs only, not X terms).
  167.    The ALT keys still work, if you get stuck.  I don't know whether this
  168.    is a bug in SUN's server or whether it is Motif related.
  169.  
  170.    Here is a copy of my .xinitrc:  It's not elegant.  Sun's default
  171.    openwin startup file is in: /usr/openwin/lib/Xinitrc.  You can
  172.    copy this to ~/.xinitrc and customize as desired.  Obviously, the
  173.    default behavior is to start the OpenLook environment (boo!).
  174.  
  175.  
  176. #!/bin/sh
  177. #
  178. # .xinitrc - OpenWindows startup script.
  179. #
  180. if [ -f $HOME/.Xdefaults ]; then
  181.     xrdb $HOME/.Xdefaults              # Load Users X11 resource database
  182. fi
  183. if [ -f $HOME/.Xdefaults.sun ]; then
  184.     xrdb -merge $HOME/.Xdefaults.sun
  185. fi
  186. DISPLAY=`hostname`:0.0
  187. export DISPLAY
  188. xhost + > /dev/null
  189. #xterm -sb -sl 512 -T `hostname` -ls -n `hostname` &
  190. xterm -sb -sl 512 -T `hostname` -n `hostname` &
  191. mwm &
  192. xclock -geometry +1010+0 &
  193. xload -geometry +710+5 -fg red &
  194. xsetroot -solid salmon &
  195. xterm -sb -sl 100 -T CONSOLE_DO_NOT_LOGOUT -C -n console -iconic
  196. #wait
  197.  
  198. Here's .Xdefaults.sun, which gives me a more readable font for use with
  199. motif on Sun monitors:
  200.  
  201. !Some additional .Xdefaults values specifically for SUN
  202. !
  203. ! After loading .Xdefaults, xrdb -merge .Xdefaults.sun
  204. !
  205. Mwm*fontList:           8x16
  206. !Mwm*fontList:          vtbold
  207. !Change as desired.
  208.  
  209.  
  210.      You will probably want to maintain LD_LIBRARY_PATH to something like:
  211. /opt/SUNWspro/lib:/usr/ccs/lib:/usr/ucblib:/usr/X11R5/lib:/usr/lib:
  212. /usr/openwin/lib.  If you use emacs, you will need to leave /usr/openwin/lib
  213. there.  [This is because you probably, like me, used the distributed version
  214. of s-sol2.h, which explicitly refers to windowing libraries as being in the
  215. /usr/openwin locations.  Yes, I know that emacs/Solaris ought to allow
  216. LibXt.so.N.M to be "picked up" from elsewhere, like /usr/X11R5/lib, but the
  217. one emacs links with is LibXt.so.4.something, and the mit one is
  218. LibXt.so.5.something.  So it seems to want the .4 one.  Any comments?  I'd
  219. prefer not to rebuild emacs based on the X11R5 libs because I occassionally
  220. need to move the emacs binaries to machines without the mit files.]
  221.  
  222. -----------------------------------------------------------------------------
  223. Subject: 143)  What compile errors/warnings might I get in both Sun 3 and Sun
  224. 4?
  225.  
  226. Answer:
  227.  
  228.  
  229. make: Warning: Too many rules defined for target
  230. make: Warning: Too many rules defined for target
  231. "callbacks.c", line 1530: warning: illegal combination of pointer
  232. and integer, op =
  233. "callbacks.c", line 1531: warning: illegal combination of pointer
  234. and integer, op =
  235. "callbacks.c", line 1532: warning: illegal combination of pointer
  236. and integer, op =
  237. "utils.c", line 73: warning: illegal combination of pointer and integer, op =
  238. "utils.c", line 74: warning: illegal combination of pointer and integer, op =
  239. "utils.c", line 122: warning: illegal combination of pointer and integer, op =
  240. "utils.c", line 123: warning: illegal combination of pointer and integer, op =
  241. "utils.c", line 191: warning: illegal combination of pointer and integer, op =
  242. "utils.c", line 194: warning: illegal combination of pointer and integer, op =
  243. "utils.c", line 195: warning: illegal combination of pointer and integer, op =
  244. "utils.c", line 196: warning: illegal combination of pointer and integer, op =
  245. "utils.c", line 316: warning: illegal combination of pointer and integer, op =
  246. "utils.c", line 334: warning: illegal combination of pointer and integer, op =
  247. "utils.c", line 338: warning: illegal combination of pointer and integer, op =
  248. "utils.c", line 341: warning: illegal combination of pointer and integer, op =
  249. "xmdialogs.c", line 838: warning: illegal combination of pointer
  250. and integer, op =
  251. "xmeditor.c", line 1152: warning: illegal combination of pointer
  252. and integer, op =
  253.  
  254. These warning messages can be ignored. OSF is aware of these warnings.
  255.  
  256.  
  257. -----------------------------------------------------------------------------
  258. Subject: 144)  On a Sun 3, what are the mwm startup error messages about?  I
  259. get
  260.  
  261. mwm: Invalid accelerator specification on line 7 of
  262.      specification string
  263. mwm: Invalid accelerator specification on line 31 of
  264.       configuration file
  265.  
  266.  
  267. Answer: This is because some Sun keyboards do not have an F10 key and some sun
  268. workstations which have an F10 key do not have X-servers which recognize it.
  269. The F10 key is used by mwm.  If the machine does have an F10 key, the user
  270. should use xmodmap to tell the server it exists.  Otherwise, change the
  271. definition of the DefaultWindowMenu in /usr/lib/X11/system.mwmrc (after
  272. installation) or in /lib/clients/mwm/system.mwmrc (before installation).
  273. Change the accelerator of "Maximize" (it is "Alt<Key>F10)" to something else.
  274. Also, you should change the definition of DEFAULTSYSTEMMENU in the file
  275. /clients/mwm/WmResource.c in a similar fashion.  There is as yet no standard
  276. redefinition for F10.
  277.  
  278.  
  279. -----------------------------------------------------------------------------
  280. Subject: 145)  Are there problems making shared libraries on a Sun?
  281.  
  282. Answer: If you use the -pic option you may run out of offset table space.  use
  283. the -PIC option instead.
  284.  
  285. You may get the message "ld.so: Undefined symbol: __XtInherit" when executing
  286. UIL. There is a problem in shared library build when you compare a function
  287. variable to a routine name, but don't call the routine.  Either, you can build
  288. the Xt library nonshared, or you can put a reference to XtToolkitInitialize in
  289. the UIL main program (or even include a module that references it).  The
  290. routine doesn't even have to be called; it just has to be there.
  291.  
  292.  
  293. -----------------------------------------------------------------------------
  294. Subject: 146)  The OpenWindows server hangs when I popup a menu with Button 3.
  295.  
  296. [Last modified: August 92]
  297.  
  298. Answer: This is an OpenWindows problem, but if you have Motif source you can
  299. fix your own applications. From Steve Sistare of Thinking Machines Corp.:
  300. "Change the 2 calls to XtGrabButton in RowColumn.c such that ButtonReleaseMask
  301. | ButtonPressMask is passed for the event mask.  Currently, only
  302. ButtonReleaseMask is passed.  Also, change the owner_event argument to FALSE.
  303. " This has not been fixed in Motif as at 1.1.5.
  304.  
  305. -----------------------------------------------------------------------------
  306. Subject: 147)  Has anyone made shared libraries on an IBM RS/6000?
  307.  
  308. Answer: [NOTE: This may not a problem any longer; I believe that AIX is now
  309. delivered with shared Xm libraries. If you know the status of this, email
  310. ksall@cen.com.]
  311.  
  312. From Sakari Jalovaara: There is a problem: Xm redefines VendorShell and the
  313. AIX linker put _both_ Xm's and Xt's VendorShell into programs.  When an AIX
  314. shared library is created as many references inside the library are resolved
  315. as possible.  If the symbol vendorShellClassRec is defined in libXt and
  316. referenced, say, from a function XtFoo() also in libXt, the "ld" run that
  317. creates the shared library resolves the reference:
  318.  
  319.         XtFoo() -> vendorShellClassRec
  320.  
  321. Then I create the Motif library that has its own vendorShellClassRec and an
  322. XmBar() function that uses it; libXm will also contain a resolved reference to
  323. vendorShellClassRec:
  324.  
  325.         XmBar() -> vendorShellClassRec
  326.  
  327. Finally, I link a program that uses both XtFoo() and XmBar() and the program
  328. will end up with _two_ independent "vendorShellClassRec"s:
  329.  
  330.         XtFoo() -> vendorShellClassRec [Xt version]
  331.         XmBar() -> vendorShellClassRec [Xm version]
  332.  
  333. Instant schizo zaphod mode.  In reality, vendorShellClassRec is not referenced
  334. from functions but from other widget class records.
  335.  
  336. I can't just pull Vendor.o out from the shared Xt (Vendor.o appears to define
  337. the only external symbols redefined by libXm) because AIX shared libraries
  338. apparently can't contain unresolved external references.  If I take out
  339. Vendor.o I have to take out every other file that uses symbols defined there -
  340. and then files that need those files, etc.  I tried it and ended up with three
  341. or four object files in libXt and the res non-sharable.
  342.  
  343. I kludged around this by putting all of libXt (minus Vendor.o) into the shared
  344. libXm.  It isn't a pretty solution but it works - and beats having a
  345. statically linked two-megabyte "periodic" demo...
  346.  
  347.  
  348. -----------------------------------------------------------------------------
  349. Subject: 148)  What is the error  "Unaligned access in XmString" under Ultrix?
  350.  
  351. Answer: Compile  XmString.c with STRINGS_ALIGNED.
  352.  
  353. -----------------------------------------------------------------------------
  354. Subject: 149)  TOPIC: KEYSYMS
  355.  
  356. -----------------------------------------------------------------------------
  357. Subject: 150)  What is causing the messages "unknown keysym osfDown..."?  It
  358. happens when I run an application under Motif 1.1
  359.  
  360. Answer: There is an OSF supplied addition to the /usr/lib/X11/XKeysymDB file.
  361. It is found on the release tape and should have been automatically installed
  362. if the installation procedure was followed in the Release Notes.
  363.  
  364. You have to copy (or append) lib/Xm/XKeysymDB into /usr/lib/X11.  This may
  365. require root permission.  It is not clear how to fix the problem if you can't
  366. do this.  The error comes from Xt translation table parsing and can't be fixed
  367. in Motif, so if you can't get root permission you may be stuck.  The file is
  368. not copyrighted so you can install it on other systems.
  369.  
  370. If X has been built so that XKeysymDB is not in this directory, and you don't
  371. know where it is looking, run 'strings libX11.a | grep XKeysymDB' to find the
  372. path.
  373.  
  374. On a Sun running openwin with shared libraries, you may need to put the path
  375. for the library containing XKeysymDB *first* in the path list in
  376. LD_LIBRARY_PATH, or it may find the wrong XKeysymDB in the wrong directory.
  377.  
  378. XKeysymDB simply contains the registered keysym values for the OSF keysyms.
  379. The OSF values are server-independent.  And, all registered keysyms will be
  380. included in an XKeysymDB file to be shipped with X11R5.
  381.  
  382. In the meantime (till all systems are X11R5+), a list of the registered
  383. keysyms can be found in the X11R4 release in mit/doc/Registry/Xregistry.
  384.  
  385. Also note the XKEYSYMDB environment variable. Setting this to point to the
  386. XKeysymDB file often helps, but not always...
  387.  
  388.  
  389. -----------------------------------------------------------------------------
  390. Subject: 151)  What happens if I can't install Motif Keysyms?
  391.  
  392. From: tessi!george@nosun.West.Sun.COM (George Mitchell)
  393.  
  394. Here's what appears to happen if you don't have XKeysymDB in place to define
  395. OSF's virtual keysyms:
  396.  
  397. 1. At class initialize time, for a widget (such as XmText) that uses virtual
  398. keysyms in its event translation table, all entries which refer to those
  399. keysyms fail to parse correctly.  In the case of XmText, instead of ending up
  400. with a translation table with roughly 90 entries, you end up with one that has
  401. 29.
  402.  
  403. 2. XKeysymDB doesn't exist, so you'd assume that KeyPress events will get
  404. translated to plain vanilla keysyms, right?  WRONG!  All Motif widgets install
  405. a virtual keysym translator ANYWAY!  Consequently, the backspace key (for
  406. example) gets translated to the keysym osfBackSpace.
  407.  
  408. 3. Therefore, if you augment or override your widget's translations with
  409. translations that refer to plain vanilla BackSpace, they will never be
  410. triggered, because you will NEVER see plain vanilla BackSpace, only
  411. osfBackSpace.
  412.  
  413. 4. But you can't use osfBackSpace in an event translation entry, because you
  414. don't have XKeysymDB installed!
  415.  
  416. Here's how I'm "dealing" with the problem right now: Motif installs its
  417. virtual keysym translator by calling XtSetKeyTranslator every time a
  418. VendorShell (or subclass) widget is created.  So every time I create a shell,
  419. I immediately call XtSetKeyTranslator (display, XtTranslateKey) to restore the
  420. default translator.  No more funny virtual keysyms!  Now I can reinstall non-
  421. osfKeySym translations and have them work the way I expect.
  422.  
  423.  
  424. -----------------------------------------------------------------------------
  425. Subject: 152)  Why has OSF introduced Keysyms into Motif 1.1?  They weren't
  426. there in Motif 1.0.
  427.  
  428. Answer: From: ellis@osf.org
  429.  
  430. Virtual Keysyms are meant to provide a consistent keyboard model for Motif
  431. applications running in a heterogeneous environment in which proprietary (i.e.
  432. vendor specific) non-Motif applications may also be running.
  433.  
  434. First of all, for the sake of the rest of the readers, let's explain why this
  435. is an issue:
  436.  
  437.  
  438. It would be lovely if Motif's translation tables could just use the obvious
  439. keysyms predefined by X.  For example, there are keysyms for XK_BackSpace,
  440. XK_Delete, XK_Left, XK_Right, etc.  Shouldn't these be the ones that are used
  441. in our translations?  Unfortunately, the problem is not so simple.  Some
  442. specific examples:
  443.  
  444.    While most vendors bind XK_BackSpace to the key at the top right
  445.    of the standard keyboard (often engraved with a leftwards
  446.    pointing arrow), not all do.  In fact, some vendors (including DEC)
  447.    bind that key to XK_Delete.
  448.  
  449.    While most vendors bind the arrow keys to XK_Up, etc, a number of
  450.    vendors (including Sun, on some servers) bind them to function key
  451.    keysyms.
  452.  
  453. A simplistic solution would require the use of xmodmap to change the offending
  454. bindings.  That would work swell in an all Motif environment.  However, OSF's
  455. goal (not always perfectly achieved) is interoperability.  That is, we'd like
  456. to make sure that both Motif and non-Motif programs can happily run in the
  457. same environment.
  458.  
  459. It is expected that a vendor may have a wide variety of existing X-based
  460. software that uses the keysyms as established by that vendor for specific
  461. purposes.  It is expected that these applications may run at the same time as
  462. Motif-based software.  Using xmodmap to change keysyms on the server side
  463. could "break" the existing applications (or at the very least their
  464. documentation) by making some keys unavailable, or by moving the location.
  465.  
  466. So, we chose not to use xmodmap.  By the way, though OpenLook uses a different
  467. implementation (they recompile their virtual translation tables into actual
  468. translation tables), they basically adopted the same approach, presumably for
  469. similar reasons.
  470.  
  471. To work properly, the virtual keysym model we implemented depends on Xlib
  472. finding XKeysymDB installed appropriately (which standard Motif installation
  473. does).  This simply defines the keysyms (not the key they are bound to).  This
  474. unfortunate piece of stupidity is necessary because MIT only includes standard
  475. keysyms in keysymdef.h.  It should be said that our lives would be made easier
  476. if MIT would also see fit to include registered keysyms in keysymdef.h as
  477. well.
  478.  
  479. Motif applications determine how to bind virtual to actual keys by looking for
  480. either a resource or a property on the root window which describes what to do.
  481. Note that this information is on the server side, so that all applications use
  482. the same virtual bindings regardless of where they are running.  Mwm will
  483. happily create the property if it finds a .motifbind file in your home
  484. directory when it starts up.  (Actually, things generally work even if none of
  485. this is done, since if all else fails, the Motif toolkit chooses a virtual
  486. bindings table to use based on the identification of the server).
  487.  
  488. The actual implementation of virtual keys is made possible by a hook in the
  489. Intrinsics.  Undoubtably, the implementation would be simpler and cleaner if
  490. virtual key support was more directly supported by the Intrinsics.  We will be
  491. exploring this possibility in the future.
  492.  
  493.   -- Ellis
  494.  
  495. -----------------------------------------------------------------------------
  496. Subject: 153)  TOPIC: UIL
  497.  
  498. [NOTE: As you can see, this is a new topic area. Send me your ideas for
  499. answered questions pertaining to this topic.]
  500.  
  501. -----------------------------------------------------------------------------
  502. Subject: 154)  What is UIL and why is it so popular?
  503.  
  504. [Last modified: Sept 94]
  505.  
  506. Answer:
  507.  
  508. UIL is the acronym for "User Interface Language", a Motif standard which
  509. permits separation of the user interface from application code.  UIL is a
  510. textual description of the user interface which is compiled into binary form
  511. called UID ("User Interface Definition") using the Motif-provided compiler
  512. called "uil".
  513.  
  514. It is important to realize that UIL is a static description of the UI in that
  515. connections between buttons and the dialogs they invoke, for example, is not
  516. expressed here; dynamic UI behavior appears in C code.
  517.  
  518. The Period Table of Widgets, called "periodic" (delivered by many Motif
  519. vendors) is an example of a UIL application.
  520.  
  521. There are many advantages and disadvantages of UIL applications.  A few of the
  522. advantages are:
  523.  
  524.     UIL is a standard format which encourages separation of the
  525.     user interface from application code.
  526.  
  527.     UIL can be read and/or written by many of the GUI builders and UIMS
  528.     tools mentioned elsewhere in this FAQ, making your interface portable
  529.     (to a degree) across builder tools.
  530.  
  531.     UIL is a much better language than C for defining a widget
  532.     hierarchy: in C, the widget hierarchy is expressed "linearly"
  533.     by referencing a previously-created parent widget when creating
  534.     a child widget; in UIL, widget trees are defined more naturally
  535.     using nesting.
  536.  
  537.     With UIL, you separate the definition of the widget tree from
  538.     the application.  You can make major changes to the look-and-feel
  539.     without re-building the application.
  540.  
  541.     It is possible to write a "general-purpose" application that defines
  542.     a library of callbacks.  The application may "execute" any UIL file
  543.     that references callbacks from the library.
  544.  
  545.  
  546. For a good UIL reference, see "Motif Programming Manual", Volume 6A, published
  547. by O'Reilly and Associates. [See "BOOKS" for details.]
  548.  
  549. -----------------------------------------------------------------------------
  550. Subject: 155)  What is Mrm?
  551.  
  552. [Last modified: Sept 94]
  553.  
  554. Answer:
  555.  
  556. Mrm is the "Motif Resource Manager", a set of functions (whose names begin
  557. with Mrm, such as MrmFetchWidget and MrmRegisterNames) in libMrm.a which
  558. retrieve the widget hierarchy from the UID file, associate callbacks, and
  559. create the widgets.
  560.  
  561. -----------------------------------------------------------------------------
  562. Subject: 156)  How do I specify a search path for ".uid" files?  Answer: Use
  563. the UIDPATH environment variable.  It is documented on the MrmOpenHierarchy()
  564. man page.
  565.  
  566. -----------------------------------------------------------------------------
  567. Subject: 157)  Can I specify callback functions in resource files?
  568.  
  569. Answer: To specify callbacks, you must use UIL in addition to or in place of
  570. resource files.  You can, however, specify translations in resource files,
  571. which give you most of the same functionality as callback functions.
  572.  
  573. Thanks to Ken Lee, kenton@allegro.esd.sgi.com
  574.  
  575. -----------------------------------------------------------------------------
  576. Subject: 158)  How can I set a multiline label in UIL?
  577.  
  578. [Last modified: Sept 94]
  579.  
  580. Answer: In UIL, you have to explicitly create a compound string with a
  581. separator.  Here's what W. Scott Meeks suggests:
  582.  
  583. value nl : compound_string('', seperate=true);
  584.  
  585. object my_label : XmLabel
  586. {
  587.     arguments
  588.     {
  589.         XmNlabelString = 'Here' & nl & 'is' & nl & 'the' & nl & 'Label';
  590.     };
  591. };
  592.  
  593.  
  594. -----------------------------------------------------------------------------
  595. Subject: 159)  TOPIC: ICONIFICATION and DE-ICONIFICATION
  596.  
  597. Iconification/de-iconification is a co-operative process between a client and
  598. a window manager.  The relevant standards are set by ICCCM.  Mwm is ICCCM
  599. compliant.  The toplevel (non-override-redirect) windows of an application may
  600. be in three states: WithdrawnState (neither the window nor icon visible),
  601. NormalState (the window visible) or IconicState (the icon window or pixmap
  602. visible).  This information is contained in the WM_STATE property but ordinary
  603. clients are not supposed to look at that (its values have not yet been
  604. standardised).  Movement between the three states is standardised by ICCCM.
  605.  
  606. -----------------------------------------------------------------------------
  607. Subject: 160)  How can I keep track of changes to iconic/normal window state?
  608.  
  609. Answer: You can look at the WM_STATE property, but this breaks ICCCM
  610. guidelines.  ICCCM compliant window managers will map windows in changing them
  611. to normal state and unmap them in changing them to iconic state. Look for
  612. StructureNotify events and check the event type:
  613.  
  614.         XtAddEventHandler (toplevel_widget,
  615.                         StructureNotifyMask,
  616.                         False,
  617.                         StateWatcher,
  618.                         (Opaque) NULL);
  619.         ....
  620.         void StateWatcher (w, unused, event)
  621.         Widget w;
  622.         caddr_t unused;
  623.         XEvent *event;
  624.         {
  625.                 if (event->type == MapNotify)
  626.                         printf ("normal\n");
  627.                 else if (event->type == UnmapNotify)
  628.                         printf ("iconified\n");
  629.                 else    printf ("other event\n");
  630.         }
  631.  
  632.  
  633. If you insist on looking at WM_STATE, here is some code (from Ken Sall) to do
  634. it:
  635.  
  636.         /*
  637.         ------------------------------------------------------------------
  638.         Try a function such as CheckWinMgrState below which returns one of
  639.         IconicState | NormalState | WithdrawnState | NULL :
  640.         ------------------------------------------------------------------
  641.         */
  642.         #define WM_STATE_ELEMENTS 1
  643.  
  644.         unsigned long *CheckWinMgrState (dpy, window)
  645.         Display *dpy;
  646.         Window window;
  647.         {
  648.           unsigned long *property = NULL;
  649.           unsigned long nitems;
  650.           unsigned long leftover;
  651.           Atom xa_WM_STATE, actual_type;
  652.           int actual_format;
  653.           int status;
  654.  
  655.             xa_WM_STATE = XInternAtom (dpy, "WM_STATE", False);
  656.  
  657.             status = XGetWindowProperty (dpy, window,
  658.                           xa_WM_STATE, 0L, WM_STATE_ELEMENTS,
  659.                           False, xa_WM_STATE, &actual_type, &actual_format,
  660.                           &nitems, &leftover, (unsigned char **)&property);
  661.  
  662.             if ( ! ((status == Success) &&
  663.                         (actual_type == xa_WM_STATE) &&
  664.                         (nitems == WM_STATE_ELEMENTS)))
  665.                 {
  666.                 if (property)
  667.                     {
  668.                     XFree ((char *)property);
  669.                     property = NULL;
  670.                     }
  671.                 }
  672.             return (property);
  673.         } /* end CheckWinMgrState */
  674.  
  675.  
  676. One problem with testing WM_STATE is that a race condition is possible;
  677. immediately after testing it, it could change, and the logic proceeds to
  678. behave as if it were in the old state.
  679.  
  680. -----------------------------------------------------------------------------
  681. Subject: 161)  How can I check if my application has come up iconic?  I want
  682. to delay initialization code and other processing.
  683.  
  684. Answer: Use XtGetValues and check for the XmNinitialState value of the
  685. toplevel shell just before XtMainLoop. -- IconicState is iconic, NormalState
  686. is not iconic.
  687.  
  688.  
  689. -----------------------------------------------------------------------------
  690. Subject: 162)  How can I start my application in iconic state?
  691.  
  692. Answer: From the command line
  693.  
  694.         application -iconic
  695.  
  696. Using the resource mechanism, set the resource XmNinitialState to IconicState
  697. of the toplevel shell widget (the one returned from XtInitialise).
  698.  
  699. -----------------------------------------------------------------------------
  700. Subject: 163)  How can an application iconify itself?
  701.  
  702. Answer: In R4 and later, use the call XIconifyWindow.
  703.  
  704. For R3, send an event to the root window with a type of WM_CHANGE_STATE and
  705. data IconicState.
  706.  
  707.         void
  708.         IconifyMe (dpy, win)
  709.         Display *dpy;
  710.         Window win;     /* toplevel window to iconify */
  711.         {
  712.                 Atom xa_WM_CHANGE_STATE;
  713.                 XClientMessageEvent ev;
  714.  
  715.                 xa_WM_CHANGE_STATE = XInternAtom (dpy,
  716.                                         "WM_CHANGE_STATE", False);
  717.  
  718.                 ev.type = ClientMessage;
  719.                 ev.display = dpy;
  720.                 ev.message_type = xa_WM_CHANGE_STATE;
  721.                 ev.format = 32;
  722.                 ev.data.l[0] = IconicState;
  723.                 ev.window = win;
  724.  
  725.                 XSendEvent (dpy,
  726.                         RootWindow (dpy, DefaultScreen(dpy)),
  727.                         True,
  728.                         (SubstructureRedirectMask | SubstructureNotifyMask),
  729.                         &ev);
  730.                 XFlush (dpy);
  731.         }
  732.  
  733.  
  734. -----------------------------------------------------------------------------
  735. Subject: 164)  How can an application de-iconify itself?
  736.  
  737. Answer: XMapWindow (XtDisplay (toplevel_widget), XtWindow (toplevel_widget)).
  738.  
  739. -----------------------------------------------------------------------------
  740. Subject: 165)  TOPIC: SPECIALIZED WIDGETS
  741.  
  742. [Last modified: Sept 94]
  743.  
  744. This section describes a few specialized widgets people have asked about.  A
  745. _far_ more comprehensive illustrated list is maintained by John L. Cwikla
  746. (cwikla@wri.com).  His list covers these widget categories:
  747.  
  748.         Composite Widgets
  749.         Non-Composite Widgets
  750.         Motif 1.1 Compatible
  751.         Motif 1.2 Compatible
  752.         Athena Compatible
  753.         FWF Widget Set
  754.         By Author
  755.         Shareware Widgets
  756.         Commercial Widgets
  757.  
  758. For John L. Cwikla's Widget FAQ Home Page, WWW users should see:
  759.  
  760.         http://www.wri.com/~cwikla/widget.html
  761.  
  762. If you don't have access to the World Wide Web, Cwikla's Widget FAQ (sans
  763. pictures) can be obtained from ftp.x.org:
  764.  
  765.         /contrib/faqs/Widget.FAQ.Z
  766.  
  767. The widgets discussed currently include:
  768.  
  769.         Alert Animator AppPlusShell Array Arrow Board Button ButtonFaceLib
  770.         Canvas CircularPercentage Cmap Common ComboBox EzMenu FileChooser
  771.         FileComplete FileSelector Frame Group HScrollBar Hdial Histogram
  772.         Icon IconBox ImageSelector Label Mdial MenuBar MPEG MultiList
  773.         NewToggle OptionButton Pager PEXtWorkstation PieMenu PixelEditor
  774.         Prompt PullDown RadioGroup RheoStat RowCol ScrolledList ScrolledWindow
  775.         Scrollbar Shistogram Slider2 SmartMessageBox SpinButton Stack Tabs
  776.         TextMenu ThumbWheel Toggle VScrollbar XbaeCaption XbaeMatrix XeAudio
  777.         XeFrame XeRaster XeText XeTextEd XeVideo XmtChooser XmtCli
  778.         XmtHelpBrowser XmtHelpBox XmtLayout XmtMenu XmtMsgLine XmtInputField
  779.         and xhdg
  780.  
  781.  
  782. -----------------------------------------------------------------------------
  783. Subject: 166)  Where can I get a Table widget? Matrix widget? Spreadsheet
  784. widget?
  785.  
  786. [Last modified: Sept 94]
  787.  
  788. Answer: Kee Hinckley (now: nazgul@utopia.com) recently informed this FAQ
  789. maintainer that he will put the Table widget on ftp at ftp.utopia.com
  790. _approximately_ at the end of September or early October, 1994. He is in the
  791. process of addressing some issues concerning Motif 1.2 and higher with respect
  792. to the Table widget.  The Widget Creation Library (Wcl) also has a version of
  793. the Table widget.
  794.  
  795. In the Xbae README, Andrew Wason (aw@bae.bellcore.com) writes: XbaeMatrix is a
  796. Motif widget which presents an editable array of string data to the user in a
  797. scrollable table similar to a spreadsheet. The rows and columns of the Matrix
  798. may optionally be labeled. Also, a number of "fixed" leading rows or columns
  799. may be specified - these behave similarly to the labels. While XbaeMatrix
  800. looks and acts like a grid of XmTextField widgets, it actually contains only
  801. one XmTextField.  This means that XbaeMatrix widgets with hundreds or
  802. thousands of rows have much less overhead than they would if they used an
  803. XmTextField for each cell. XbaeMatrix has callbacks for doing field validation
  804. and customizing traversal. It allows cells to be assigned independent colors.
  805. It allows rows, columns and regions of cells to be selected (highlighted).
  806. The matrix can be dynamically grown or shrunk by adding and deleting rows and
  807. columns at any position.
  808.  
  809. For Xbae code and documentation via ftp, see the various files
  810. ftp.x.org:/contrib/widgets/motif/Xbae-*.
  811.  
  812.  
  813. Expert Database Systems, Inc., 377 Rector Place, Suite 3L New York, NY 10280.
  814. Phone: (212) 783-6981 has a very comprehensive table widget that uses both
  815. Motif scrollbars or a "virtual" scrollbar showing a miniature version of the
  816. entire spreadsheet. Allows for different width columns, changing colors in
  817. each cell.  Only one X-Window is used so as to reduce the amount of system
  818. resources used.  Contact Ken Jones email: ken@mr_magoo.sbi.com)
  819.  
  820.  
  821. -----------------------------------------------------------------------------
  822. Subject: 167)  Where can I get a bar graph widget?
  823. [Last modified: Sept 94]
  824.  
  825. Answer: You can fake one by using for each bar a scroll bar or even a label
  826. which changes in size, put inside a container of some kind.
  827.  
  828. Try the StripChart widget in the Athena widget set. Set the XtNupdate resource
  829. to 0 to keep it from automatically updating.
  830.  
  831. The comp.windows.x FAQ mentions a bar graph widget.
  832.  
  833. Expert Database Systems, Inc.  sells a bar graph widget as well as a multi-
  834. line graph with automatic scaling, a 3-D surface graph, and a high/Low graph
  835. with two lines for moving averages.  Contact Ken Jones Expert Database
  836. Systems, Inc., 377 Rector Place, Suite 3L New York, NY 10280.  Phone: (212)
  837. 783-6981
  838.  
  839.  
  840. The Xtra XWidget library contains a set of widgets that are subclassed from
  841. and compatible with either OSF/Motif or OLIT widgets.  The library includes
  842. widgets that implement the following:
  843.  
  844.    Spreadsheet
  845.    Bar Graph
  846.    Stacked Bar Graph
  847.    Line Graph
  848.    Pie Chart
  849.    XY Plot
  850.    Hypertext
  851.    Hypertext based Help System
  852.    Entry Form with type checking
  853.  
  854. Contact Graphical Software Technology at 310-328-9338  (info@gst.com) for
  855. information.
  856.  
  857. The XRT/graph widget, available for Motif, XView and OLIT, displays X-Y plots,
  858. bar and pie charts, and supports user-feedback, fast updates and PostScript
  859. output. Contact KL Group Inc. at 416-594-1026 (xrt_info%klg@uunet.ca)
  860.  
  861. The product Xmath, made by Integrated Systems Inc. is a product which has
  862. interactive 2d and 3d graphics for bar,strip,line,symbol,
  863. surface,contour,etc... that costs $2500.00 for commercial use and a mere
  864. $250.00 for university use that also has complete numerics capabilities, an
  865. easy to use debugger, a complete high level language, a spreadsheet, a motif
  866. gui access capability, and much more all created on top of motif.
  867.  
  868. You can either email to xmath-info@isi.com or call (408)980-1500.
  869.  
  870. Digital Equipment Corporation (DEC) provides the following product NetEd: "The
  871. network editor widget is a Motif toolkit conforming widget that applications
  872. can use to express complex interrelationships graphically in the form of
  873. networks or graphs. The network editor supports interactive or application-
  874. controlled creation and editing of directed graphs or networks."
  875.  
  876.  
  877. ACE/gr is an X based XY plotting tool implemented with a point 'n click
  878. paradigm.  A few of its features are:
  879.  
  880.    * Plots up to 10 graphs with 30 data sets per graph.
  881.    * Data read from files and/or pipes.
  882.    * Graph types XY, log-linear, linear-log, log-log, bar,
  883.         stacked bar charts.
  884.  
  885. it is available from
  886.  
  887.         ftp.ccalmr.ogi.edu (presently amb4.ccalmr.ogi.edu)
  888.  
  889. with IP address 129.95.72.34. The XView version (xvgr) will be found in
  890. /CCALMR/pub/acegr/xvgr-2.09.tar.Z and the Motif version (xmgr) in
  891. /CCALMR/pub/acegr/xmgr-2.09.tar.Z.  Comments, suggestions, bug reports to
  892. pturner@amb4.ccalmr.ogi.edu (if mail fails, try pturner@ese.ogi.edu). Due to
  893. time constraints, replies will be few and far between.
  894.  
  895. Caterpillar, Inc. sells the ENGOTS (Engineering Graphic Object Tool Set)
  896. widget set for Motif.  The library includes interactive plotting, built in
  897. units conversion,copy-cut-past, postscript output, ... :
  898.  
  899.  
  900.     XY/contour Plot (configurable to Bar plots)
  901.     XY/contour Strip Charts
  902.     Polar Plot
  903.     Custom Interactive Drawing (using provided Drawing Package)
  904.     float/int data entry (Motif Text "Look and Feel") with range checking
  905.  
  906.  
  907. Contact Paul Mauschbaugh, Caterpillar, Inc. at 309-578-4084 (mush@cat.com) for
  908. more information.
  909.  
  910. -----------------------------------------------------------------------------
  911. Subject: 168)  Is there a graph widget in which you can add vertices and edges
  912. and get automatic updating?
  913.  
  914. [Last modified: March 93]
  915.  
  916. Answer: The XUG FAQ in comp.windows.x includes information on graph display
  917. widgets.  There is also an implementation in the Asente/Swick book.
  918.  
  919.   From Martin Janzen: "You could have a look at DataViews, from V.I.
  920.    Corporation.  This package is used mainly to display a variety of graph
  921.    drawings (eg. bar, line, pie, high/low, and other charts), and to update
  922.    the graphs as information is received from "data sources" such as files,
  923.    processes (through pipes), or devices.
  924.  
  925.    However, it also provides "node" and "edge" objects which can be used
  926.    when working with network graphs.  The DV-Tools function library
  927.    provides routines which traverse a graph, count visits to each node or
  928.    edge, mark nodes or edges of interest, and so on.  A node or edge object
  929.    can have an associated "geometry object" (such as a symbol or a line),
  930.    which represents that node or edge.
  931.  
  932.    Drawbacks: There's no automatic positioning algorithm; when you add a
  933.    node or edge, you have to create and position its geometry object
  934.    yourself.  Also, this isn't a set of add-on widgets; you can either have
  935.    DataViews create an X window (ie. a separate shell), or you can create
  936.    your own XmDrawingArea and use DataViews to update its window when
  937.    expose events are received.  Finally, the package is quite expensive,
  938.    and there is a run-time charge.
  939.  
  940.    The vendor's address is:
  941.      V.I. Corporation,
  942.      47 Pleasant Street,
  943.      Northampton, MA  01060,
  944.             Email: vi@vicorp.com, Phone: (413) 586-4144, Fax:   (413) 584-2649
  945.  
  946.    or
  947.  
  948.      V.I. Corporation (Europe) Ltd.,
  949.      First Base, Beacontree Plaza,
  950.      Gillette Way,                      Email: viesales@eurovi.uucp
  951.      Reading, Berkshire  RG2 0BP"
  952.    Phone: +44 734 756010,      Fax:   +44 734 756104
  953.  
  954. From Craig Timmerman: Just wanted others to know that there is a third
  955. competitor in what may be come a big market for generic APIs.  The product is
  956. called Open Interface and Neuron Data is the vendor.  Neuron has added some
  957. extra, more complex widgets to their set.  The two most notable are a table
  958. and network widget.  [...] I believe that the network widget got its name from
  959. its ability to display expert system networks that Neuron's AI tools needed.
  960. It would be more aptly named the graph widget.  It can display and manipulate
  961. graphs of various types (trees, directed graphs, etc).  Contact is
  962.  
  963.         Neuron Data
  964.         156 University Avenue
  965.         Palo Alto,  CA  94301
  966.         (415) 321-4488
  967.  
  968.  
  969. prism!gt3273b@gatech.edu  (RENALDS,ANDREW THEODORE) posted a set of public
  970. domain routines for graph drawing.  Contact him for a later set.
  971.  
  972. From Ramon Santiago (santiago@fgssu1.fgs.slb.com): HP has released source code
  973. for XmGraph and XmArc, part of the InterWorks library, which does exactly
  974. this. The sources can be obtained by contacting Dave Shaw,
  975. librarian@iworks.ecn.uiowa.edu. A few trivial source code changes need to be
  976. made to get these widgets to compile under Motif 1.2.
  977.  
  978. Free DAG - directed acyclic graph drawing software in motif environment is
  979. available. Please send a note to address below if you want it:
  980.  
  981. Budak Arpinar, TUBITAK Software Research & Development Center, Ankara,
  982. TURKIYE, E-mail : C51881@TRMETU.BITNET
  983.  
  984.  
  985. -----------------------------------------------------------------------------
  986. Subject: 169)  Is there a help system available, such as in Windows 3?  Or any
  987. Motif based hypertext system.
  988.  
  989. [Last modified: Apr 94]
  990.  
  991. Answer:
  992.  
  993. HTML Widget from NCSA:
  994.  
  995. The NCSA Mosaic for X package contains an HTML widget which is freely
  996. available and is the main vehicle for viewing HTML documents in the Mosaic
  997. program. It has callbacks for anchor hits, selections, etc and many many
  998. resources for customizing the viewing area of your hypertext documents.  See
  999. "Where can I get the HTML widget" above.
  1000.  
  1001. GWHIS:
  1002.  
  1003. There is a new product from Quadralay Corporation, called the Global-Wide Help
  1004. & Information Systems (GWHIS).
  1005.  
  1006. from a press release: AUSTIN, TX (March 3, 1994) Quadralay Corporation today
  1007. announced its newest software development tool, Global Wide Help & Information
  1008. System (GWHIS).  GWHIS allows third party application developers to add online
  1009. documentation and context sensitive help to their applications like never
  1010. before.  This documentation may consist of plain text, rich format text,
  1011. hypertext, images, audio, and/or video animation and may easily be distributed
  1012. either locally or over a wide area network such as the Internet.
  1013.  
  1014. GWHIS consists of two primary components.  An application programming
  1015. interface (API), and a hypermedia viewer (based on technology licensed from
  1016. the NCSA Mosaic project).  Several ancillary conversion programs are also
  1017. available allowing end users to easily convert existing documentation into
  1018. GWHIS' native HTML format.
  1019.  
  1020. GWHIS is available on the following platforms: SPARC SunOS 4.1.x, SPARC
  1021. Solaris 2.x, INTEL SCO Open Desktop, INTEL Solaris 2.x, HP 9000/700, and the
  1022. RS/6000. Support for additional platforms (including MS Windows and Macintosh)
  1023. is under consideration.  Fully functional evaluation copies of this software
  1024. are available upon request or via anonymous ftp from ftp.quadralay.com.
  1025.  
  1026. Brian Combs Quadralay Corporation combs@quadralay.com
  1027.  
  1028.  
  1029. Bristol Technology have a hypertext system HyperHelp with the look-and-feel of
  1030. either Motif or OpenLook. It should be available from january 31, 1992.
  1031. Contact
  1032.  
  1033.         Bristol Technology Inc.
  1034.         898 Ethan Allen Highway
  1035.         Ridgefield, CT  06877
  1036.         203-438-6969 (phone)
  1037.         203-438-5013 (fax)
  1038.         uunet.uu.net!bristol!keith
  1039.  
  1040. Demos are available by anonymous ftp from  ftp.uu.net (137.39.1.9) in the
  1041. vendor/Bristol/HyperHelp as files sun.motif.tar.Z and hp.tar.Z.
  1042.  
  1043. There was a posting of a motif hypertext-widget to comp.sources.x (Author:
  1044. B.Raoult ( mab@ecmwf.co.uk ) ).  It had the facility to read in helptext from
  1045. a file.
  1046.  
  1047. From Francois Felix Ingrand (felix@idefix.laas.fr): I have translated the Info
  1048. AW (originally written by Jordan Hubbard) to Motif. It is a Widget to browse
  1049. Info files (format used by GNU for their various documentations). I use it as
  1050. the help system of various tool I wrote.  It is available on laas.laas.fr
  1051. (140.93.0.15) in /pub/prs/xinfo-motif.tar.Z
  1052.  
  1053. Form Scott Raney (raney@metacard.com) MetaCard is a commercial package that
  1054. can be used to implement hypertext help.  The text fields support multiple
  1055. typefaces, sizes, styles, colors, subscript/superscript, and hypertext links.
  1056. It has a Motif interface, and a template for calling it from an Xt/Motif
  1057. application is included.  You can FTP a save-disabled distribution from
  1058. ftp.metacard.com or from world.std.com.  For more info, email to
  1059. info@metacard.com.
  1060.  
  1061.  
  1062. The Motifation GbR also provides a hypertext-helpsystem named 'XpgHelp'.
  1063. (Motif look-and-feel / features like those known from MS Windows Help ) For a
  1064. free demo or more information send email either to griebel@uni-paderborn.d e
  1065. or contact the distributor:
  1066.  
  1067.         PEM GmbH,
  1068.         Vaihinger Strasse 49,
  1069.         7000 Stuttgart 80,
  1070.         Germany,
  1071.         +49 (0) 711 713045 (phone),
  1072.         +49 (0) 711 713047 (fax),
  1073.         email: basien@pem-stuttgart.de
  1074.  
  1075. XpgHelp has nearly the same features like HyperHelp: (multiple fonts, graphics
  1076. in b&w and color, different styles, tabs, links, short links, notepad, ...)
  1077.  
  1078. The Interface Builder MOTIFATION uses XpgHelp as its hypertext helpsystem.
  1079.  
  1080. -----------------------------------------------------------------------------
  1081. Subject: 170)+ Is there a canvas widget or drawing widget for graphical
  1082. display?
  1083.  
  1084. [Last modified: Oct 94]
  1085.  
  1086. Answer: Groupe Bull - Koala Project has a Motif Canvas Widget.  This widget is
  1087. intended to provide graphical display (lines, rectangles, icons,...) and
  1088. direct manipulation services (select, move, resize,...) for Xt based
  1089. applications. This widget is intended to be include in a MOTIF application,
  1090. but you can generate an Athena widget (though demos are only using MOTIF). The
  1091. widget is shipped with an objects library based on a C object oriented model
  1092. called KLONE (use of the Xt object model would dramaticaly increase
  1093. application load time and KLONE provides garbage collection).  Features:
  1094.  
  1095. - uses an improved C small object-oriented model (garbage col. + polymorphism)
  1096. - multi-view: an object may be shared between two views (canvases)
  1097. - Multi-display: two views may be on different displays / screens
  1098. - double buffering for smooth animations
  1099. - easy to use "just know how to use widgets"
  1100. - small objects
  1101. - garbage collection
  1102. - Tag object to define graphical object appearance
  1103. - define tag's attributes with Xt resources
  1104. - dispatch mechanism uses Xt -> you can set Xt translations on a graphic obj
  1105. - Interactor objects to define a complete behavior
  1106. - unlimited Zoom / Unzoom
  1107. - classes: Line, Rect, Filled rect, Xpm Icon, Group, Ellipse, Anchor, Link
  1108. - mouse interactors: move, resize
  1109.  
  1110. Requirements: MOTIF, XPM
  1111.  
  1112. See http://zenon.inria.fr:8003/koala/koala.html and
  1113. ftp://avahi.inria.fr/pub/widgets/canvas-widget-1.7.tar.gz
  1114.  
  1115. Thanks to Jean-Michel.Leon@sophia.inria.fr.
  1116.  
  1117. -----------------------------------------------------------------------------
  1118. Subject: 171)+  TOPIC: CREATING WIDGETS
  1119.  
  1120. [Looking for submissions: questions asked and answered here, folks!]
  1121.  
  1122. -----------------------------------------------------------------------------
  1123. Subject: 172)+ What are some good references on creating widgets?
  1124.  
  1125. [Last modified: Oct 94]
  1126.  
  1127. Answer: Ken Sall (ksall@cen.com) writes:
  1128.  
  1129. If you have Motif 2.0, see the new document provided by OSF called "OSF/Motif
  1130. Widget Writer's Guide" in the directory: doc/widgetGuide/Output/draft/ps.
  1131.  
  1132. If you have Motif 1.*, try these references (details in the BOOKS topic):
  1133.  
  1134.     Asente, Paul J., and Swick, Ralph R.,
  1135.     X Window System Toolkit, The Complete Programmer's Guide and Specification.
  1136.  
  1137.     Nye, Adrian & O'Reilly, Tim,
  1138.     X Toolkit Intrinsics Programming Manual.Motif Edition, Volume 4M
  1139.  
  1140.     Flanagan, David, Editor,
  1141.     X Toolkit Intrinsics Reference Manual, Volume 5
  1142.  
  1143.  
  1144. Alex Fridman (alex@genlogic.com) writes:
  1145.  
  1146. For graphical widgets, you may try the Generic Logic Toolkit. It allows custom
  1147. graphical widgets (such as Graphs and Controls) to be created interactively
  1148. from the supplied templates using the GLG 3D Graphical Editor. A Demo is
  1149. available by ftp from:
  1150.  
  1151.    ftp://ftp.netcom.com/pub/glg/
  1152.  
  1153. -----------------------------------------------------------------------------
  1154. END OF PART FIVE
  1155.  
  1156.